from rest_framework import serializers
from apps.users.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id','username','email','mobile','groups','user_permissions','password']
#直接用drf自带的模板进行增加时 1 密码没有加密  2.设置的是普通成员
    #  3 修改时密码还在显示 应该改为不显示 第二次输入
        read_only_fields = ['id']
        extra_kwargs = {
            'password':{
                'write_only':True
            }
        }
    #给密码进行加密 改写create  update
    def create(self,validated_data):
        #创建一个对象  通过继承父类的方法
        instance = super().create(validated_data)
        #加密 此处没有采用create_user是因为涉及到用户组的操作，和用户的权限操作
        #用户组和用户权限都是属于多对多的操作  父类里面封装了操作
        instance.set_password(validated_data.get('password'))
        instance.is_staff = True   #将增加的用户设置为管理员
        instance.save()
        return instance
    #修改  密码加密  重写修改的方法
    def update(self, instance, validated_data):
        instance = super().update(instance,validated_data)
        #密码加密
        instance.set_password(validated_data.get('password'))
        print(validated_data)
        instance.save()
        return instance